package br.com.hs.nfe.common.to;

import br.com.hs.nfe.common.anotation.DocumentTypeEnum;
import br.com.hs.nfe.common.anotation.Element;
import br.com.hs.nfe.common.anotation.Node;
import br.com.hs.nfe.common.anotation.TypeEnum;

/**
 * Classe de representação do local de retirada/entrega da NF-e.<br>
 * Informar apenas quando diferendo do endereço do emitente/destinatário.
 * @author Ranlive Hrysyk
 */
@Node(id = "F/G", name = "Retirada/Entrega")
public class LocalTO extends BaseTO {

    @Element(elementName = "CNPJ", publicName = "CNPJ", type = TypeEnum.CARACTER, min = 14, max = 14, required = false, document = DocumentTypeEnum.CNPJ)
    private String cnpj;
    @Element(elementName = "CPF", publicName = "CPF", type = TypeEnum.CARACTER, min = 11, max = 11, required = false, document = DocumentTypeEnum.CPF)
    private String cpf;
    private EnderecoTO enderecoTO;

    /**
     * CNPJ do destinatário/emitente.
     */
    public String getCNPJ() {
        return cnpj;
    }

    /**
     * Informar o CNPJ do destinatário/emitente.
     * @param cnpj CNPJ do destinatário/emitente
     */
    public void setCNPJ(String cnpj) {
        this.cnpj = cnpj;
    }

    /**
     * CPF do destinatário/emitente.
     */
    public String getCPF() {
        return cpf;
    }

    /**
     * Informar o CPF do destinatário/emitente.
     * @param cpf CPF do destinatário/emitente
     */
    public void setCPF(String cpf) {
        this.cpf = cpf;
    }

    /**
     * Endereço de entrega/retirada.
     */
    public EnderecoTO getEnderecoTO() {
        return enderecoTO;
    }

    /**
     * Informar o endereço de entrega/retirada.
     * @param enderecoTO Endereço de entrega/retirada
     */
    public void setEnderecoTO(EnderecoTO enderecoTO) {
        this.enderecoTO = enderecoTO;
    }
}
